// courts-booking-list.js
const API = require('../../utils/api.js');
const pathUrl = require('../../utils/common.js');

Page({
  data: {
    bookings: [], // 预约列表数据
    loading: false, // 加载状态
    page: 1, // 当前页码
    pageSize: 10, // 每页数量
    hasMore: true, // 是否有更多数据
    activeTab: '0', // 当前选中的标签
    statusList: [{key:'0',name:'预约成功'}, {key:'1',name:'已撤销'}, {key:'2',name:'已使用'}, {key:'3',name:'已拒绝'}], // 状态标签
    statusMap: {
      '0': '预约成功',
      '1': '已撤销',
      '2': '已使用',
      '3': '已拒绝'
    }, // 状态映射
    fromDetail: false // 从详情页返回标志
  },

  onLoad: function() {
    // 加载预约列表
    this.fetchBookings();
  },

  onShow: function() {
  },

  // 获取预约列表数据
  async fetchBookings(reset = true) {
    // 如果当前正在加载中，避免重复加载
    if (this.data.loading) return;
    if (reset) {
      this.setData({ page: 1, hasMore: true });
    }
    if (!this.data.hasMore && !reset) return;
    this.setData({ loading: true });
    try {
      const status = this.data.activeTab === 0 ? '' : this.data.activeTab;
      const res = await API.getCoachBookingRecords({
        pageNum: this.data.page,
        pageSize: this.data.pageSize,
        status: status
      });
      const list = res.records || [];
      // 更新数据，判断是否还有更多数据
      this.setData({
        bookings: reset ? list : [...this.data.bookings, ...list],
        hasMore: list.length >= this.data.pageSize,
        loading: false
      });
    } catch (error) {
      console.error('获取预约列表失败:', error);
      wx.showToast({ title: '获取预约列表失败', icon: 'none' });
      this.setData({ loading: false });
    }
  },

  // 切换状态标签
  switchTab: function(e) {
    const tabIndex = e.currentTarget.dataset.index;
    console.log(tabIndex)
    this.setData({ activeTab: tabIndex });
    this.fetchBookings(true); // 重新加载数据
  },

  // 跳转到预约详情页
  goToBookingDetail: function(e) {
    const id = e.currentTarget.dataset.id;
    this.setData({ fromDetail: true });
    wx.navigateTo({
      url: '/pages/booking-detail/booking-detail?id=' + id
    });
  },

  // 取消预约
  cancelBooking: function(e) {
    const id = e.currentTarget.dataset.id;
    wx.showModal({
      title: '确认取消',
      content: '确定要取消该预约吗？',
      success: (res) => {
        if (res.confirm) {
          wx.showLoading({ title: '取消中...' });
          // 这里需要调用取消预约的API，暂时模拟
          API.cancelCoachBooking(id).then(() => {
            wx.hideLoading();
            wx.showToast({ title: '取消成功' });
            this.fetchBookings(true); // 重新加载数据
          }).catch(() => {
            wx.hideLoading();
            wx.showToast({ title: '取消失败', icon: 'none' });
          });
        }
      }
    });
  },
  
  // 加载更多数据
  loadMore: function() {
    if (this.data.hasMore && !this.data.loading) {
      this.setData({ page: this.data.page + 1 });
      this.fetchBookings(false);
    }
  },

  // 下拉刷新
  onPullDownRefresh: function() {
    if (this.data.loading) {
      wx.stopPullDownRefresh();
      return;
    }
    
    // 保存原数据长度，用于比较是否有更新
    const originalLength = this.data.bookings.length;
    
    // 重新加载第一页数据
    this.fetchBookings(true).then(() => {
      // 当数据加载完成后调用stopPullDownRefresh
      setTimeout(() => {
        wx.stopPullDownRefresh();
        
        // 如果有新数据，显示提示
        if (this.data.bookings.length > originalLength) {
          wx.showToast({
            title: '已更新' + (this.data.bookings.length - originalLength) + '条数据',
            icon: 'none'
          });
        }
      }, 500);
    });
  },

  // 上拉加载更多
  onReachBottom: function() {
    if (this.data.hasMore && !this.data.loading) {
      this.setData({ page: this.data.page + 1 });
      this.fetchBookings(false);
    }
  },

  // 分享功能
  onShareAppMessage: function() {
    return {
      title: '我的场地预约',
      path: '/pages/courts-booking-list/courts-booking-list'
    };
  }
});